瀏覽器自動化(6) Selenium Server

selenium-server可支持遠程操作,而cilent端要使用selenium,直接遠程調用selenium-server,支持多系統平台或多版本瀏覽器同時測試,因為是由clinet進行控制,selenium服務器也不用拉取腳本,非常方便管理。

基本環境

  1. java

必須先安裝java,選擇jre即可。

官網下載

  1. webdriver

下載webdriver加到環境變數,一定要加入否則會無法驅動。

ChromeDriver地址

  1. selenium-server-standalone

至官網下載最新版本selenium-server,需透過java啟動server。

官網下載

  1. python module selenium
1
pip install selenium

啟動

  • 啟動 selenium-server
1
java -jar selenium-server-standalone-3.12.0.jar

啟動 默認是4444端口

網頁訪問

進入console可以看到目前開啟了那些Sessions,點擊Take Screenshot會顯示當前畫面截圖。

  • client 腳本控制

server與client可以是同一台,也可以分開,由於是瀏覽器自動化,分開的話會更好調試,也比較不會有搶屏的問題。

官方文檔有說明驅動方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Usage Example::

from selenium import webdriver

selenium_grid_url = "http://198.0.0.1:4444/wd/hub"

# Create a desired capabilities object as a starting point.
capabilities = DesiredCapabilities.FIREFOX.copy()
capabilities['platform'] = "WINDOWS"
capabilities['version'] = "10"

# Instantiate an instance of Remote WebDriver with the desired capabilities.
driver = webdriver.Remote(desired_capabilities=capabilities,
command_executor=selenium_grid_url)

Note: Always use '.copy()' on the DesiredCapabilities object to avoid the side
effects of altering the Global class instance.

remote_script1.py

1
2
3
4
5
6
7
8
9
10
11
12
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium import webdriver


browser = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities=DesiredCapabilities.CHROME,
)

browser.get("http://www.google.com")

browser.quit()

DesiredCapabilities為瀏覽器的一些自定義,以下的說明文檔查看更多的配置。

說明文檔

1
2
DesiredCapabilities.CHROME # 默認的設置,返回的是字典類型
>>> {'browserName': 'chrome', 'version': '', 'platform': 'ANY'}